3 - Remotedebugging mit GDB [ID:36114]
31 von 31 angezeigt

In der Vorlesung wurden mehrere Varianten zum Entkäfern des Betriebssystems vorgestellt.

Dies wollen wir nach Möglichkeit natürlich auch in der Praxis in unserem Stubs umsetzen.

In QEMO ist ein GDB-Stub integriert, den wir ohne zusätzlichen Aufwand einfach verwenden

können.

Allerdings unterscheidet sich die emulierte Hardware von der echten.

Das Letzte reagiert oft wesentlich empfindlicher.

Deshalb habt ihr auf unseren Testrechnern vermutlich schon das Printf-Debugging angewandt,

welches jedoch sehr side-effectbehaftet ist.

Alternativ bieten sich Hardware-Debugger wie die Geräte von Lauterbach an.

Diese haben jedoch meist einen stolzen Preis, für uns im Übungsbetrieb sind sie somit

leider nicht verfügbar.

Ein guter Mittelweg zwischen den beiden Varianten ist das Remote-Debugging mit GDB.

Neben dem Test-PC, auf dem ihr euer Stubs ausführt, den Target, brauchen wir noch einen

zweiten Rechner, den Host, welcher Zugriff auf Quelltexte und den aktuellen Stubskernel

haben muss und zudem auch in der Lage sein sollte, GDB auszuführen.

Beide Rechner müssen über ein Nullmodem-Kabel verbunden sein.

Auf dem Host muss GDB gestartet werden, während das Target bootet.

Sobald in Stubs der GDB-Stub bereit ist, kann der Host eine Verbindung herstellen und das

Zielsystem den Bootvorgang fortsetzen lassen.

Wenn nun dort ein Fehler auftritt, dann wird eine Meldung an eine GDB-Host geschickt.

Dieser zeigt ihn im Code an und erlaubt die typische Analyse des Fehlers, mit allen Vorzügen,

die GDB bietet.

Das Protokoll ist in Stubs bereits für euch implementiert.

Damit nun bei einem Fehler der GDB-Stub aktiv werden kann, kommt diese mit einer eigenen

Unterbrechungsbehandlung.

Dabei wird in der Initialisierung die interrupt Descriptor-Tabelle entsprechend umgestellt,

damit zum Beispiel bei einem Invalid-OP-Code oder General-Protection-Fault die GDB-Routine

auch aufgerufen wird.

Alles, was euer Stub braucht, ist somit die Implementierung der seriellen Schnittstelle.

Aber die Umsetzung ist natürlich freiwillig.

Und eine Hilfestellung, wie man mit GDB effizient arbeitet, kommt in einem Zusatzseminar.

Teil einer Videoserie :
Teil eines Kapitels:
Interrupts

Zugänglich über

Offener Zugang

Dauer

00:02:24 Min

Aufnahmedatum

2020-08-06

Hochgeladen am

2021-09-20 18:46:09

Sprache

de-DE

Fehlersuche mit GDB über die serielle Schnittstelle, optional für Aufgabe 2 der Lehrveranstaltung Betriebssysteme.

Folien und Transkript zum Video.

Tags

betriebssysteme operating systems stubs gdb
Einbetten
Wordpress FAU Plugin
iFrame
Teilen